pub mod class_t {
    use yew::{
        classes, html, Children, Classes, Component,
        Context, Html, Properties
    };

    #[derive(PartialEq, Properties)]
    pub struct ClassesProps {
        #[prop_or_default]
        pub class: Classes,
        #[prop_or(true)]
        pub fill: bool,
        #[prop_or_default]
        pub children: Children,
    }

    
    // Component use SelfProps
    pub struct ClassesComponent;

    impl Component for ClassesComponent {
        type Message = ();

        type Properties = ClassesProps;

        fn create(_ctx: &Context<Self>) -> Self {
            Self
        }

        fn view(&self, ctx: &Context<Self>) -> Html {
            let ClassesProps { class, fill, children } = &ctx.props();
            html!{
                <div
                    class={classes!(
                        "my-container-class",
                        fill.then(|| Some("my-fill-class")),
                        class.clone()
                    )}
                >
                    {children.clone()}
                </div>
            }
        }
    }
}